// utils/request.js
const baseUrl = "http://3790wz6pj968.vicp.fun";
import { to } from "../utils/index";

function request(options) {
  uni.showLoading({
    title: "加载中",
    mask: true,
  });
  let defaultHeader = {
    glens_token: uni.getStorageSync("token"),
  };
  // 如果使用params传参则，以&符拼接的格式传参
  if (options.params) {
    options.data = options.params;
    defaultHeader["Content-Type"] = "application/x-www-form-urlencoded";
  }
  return new Promise((resolve, reject) => {
    uni.request({
      url: baseUrl + options.url, // 接口地址：前缀+方法中传入的地址
      method: options.method || "GET", // 请求方法：传入的方法或者默认是“GET”
      data: options.data || {}, // 传递参数：传入的参数或者默认传递空集合
      header: {
        ...defaultHeader,
        ...options.header,
      },
      success: (res) => {
        if (res.statusCode && res.statusCode != 200) {
          uni.hideLoading().then(() => {
            uni.showToast({
              title: "api错误" + res.errMsg,
              icon: "none",
            });
          });
          reject();
        } else {
          res = res.data;
          if (res.code == 200) {
            uni.hideLoading();
            resolve(res.data);
          } else {
            if (res.message === "用户未登录或会话已过期") {
              uni.removeStorageSync("USER-INFO");
              to("/pages/login/index");
              return;
            }
            uni.hideLoading().then(() => {
              uni.showToast({
                title: res.message,
                icon: "none",
              });
            });
            reject(res.message);
          }
        }
      },
      // 这里的接口请求，如果出现问题就输出接口请求失败
      fail: (err) => {
        uni.hideLoading().then(() => {
          uni.showToast({
            title: err,
            icon: "none",
          });
        });
        reject(err);
      },
    });
  });
}

export default request;
